package com.miracle.tears.controller;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import static com.miracle.tears.util.FileOperatorUtil.*;

/** 程序驱动器入口 */
public class ProgramLauncher {

  public static void main(String[] args) throws Exception {
    // 项目文件位置
    String filePath = "S:\\BIGDATA\\项目\\源\\weibodata";
    // 文件名称获取
    String split = ".txt";
    // 文件类型一
    String arg0 = "user";
    // 文件类型二
    String arg1 = "content";
    // 输出用户文件
    String outputUserFile = "UserDataSummary.txt";
    // 输出评论文件
    String outputContentFile = "ContentDataSummary.txt";
    // 输入文件字符集
    String inputCharset = "gbk";
    // 输出文件字符集
    String outputCharset = "utf-8";
    // ELT程序启动
    ProgramStart(
        filePath,
        split,
        arg0,
        arg1,
        outputUserFile,
        outputContentFile,
        inputCharset,
        outputCharset);
  }

  /**
   * 程序启动器类
   * @param filePath
   * @param split
   * @param arg0
   * @param arg1
   * @param outputUserFile
   * @param outputContentFile
   * @param inputCharset
   * @param outputCharset
   * @throws Exception
   */
  public static void ProgramStart(
      String filePath,
      String split,
      String arg0,
      String arg1,
      String outputUserFile,
      String outputContentFile,
      String inputCharset,
      String outputCharset)
      throws Exception {
    // 目录
    File dir = new File(filePath);
    // 文件类型列表
    List<File> result = new ArrayList<>();
    // 获取文件类型
    RecGetFiles(dir, result, split);

    // 获取有关user的文本文件
    List<String> user = getContentDataList(result, arg0);
    // 获取需要的内容(按txt切分好的内容)
    List<String> list = getStringList(user, inputCharset);
    // 遍历 user信息数据 写出到新文件
    for (String string : list) {
      writeFile(string, outputUserFile, outputCharset);
    }
    // 获取有关content的文件-----这是文件名子
    List<String> content = getContentDataList(result, arg1);
    // 获取需要的内容，按xml切分好的内容
    List<String> xmlList = getXMLList(content, inputCharset);
    for (String string : xmlList) {
      writeFile(string, outputContentFile, outputCharset);
    }
  }
}
